
package com.jair.manage.service;

import java.util.List;

import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import com.github.abel533.entity.Example;
import com.github.pagehelper.PageInfo;
import com.jair.manage.pojo.Item;
import com.jair.manage.pojo.ItemDesc;
import com.jair.manage.pojo.ItemParamItem;

/**
 * @Description 
 * @FullName com.jair.manage.service.ItemService 
 * @Author Jair_Huang
 * @Create 2017年5月22日 上午8:49:33   
 */
/**
 * 
 * @Create By Jair_Huang on 2017年5月22日 下午3:56:52
 */
@Service
public class ItemService extends BaseService<Item> {

    @Autowired
    private ItemDescService itemDescService;

    @Autowired
    private ItemParamItemService itemParamItemService;

    public void saveItem(Item item, String desc, String itemParams) {
        item.setStatus(1);// 初始状态
        item.setId(null);// 强制id为null，考虑到安全性
        // 新增商品
        super.save(item);

        // 新增商品描述数据
        ItemDesc itemDesc = new ItemDesc();
        itemDesc.setItemId(item.getId());
        itemDesc.setItemDesc(desc);
        this.itemDescService.save(itemDesc);

        if (StringUtils.isNotEmpty(itemParams)) {// 不为空时创建数据
            ItemParamItem itemParamItem = new ItemParamItem();
            itemDesc.setItemId(item.getId());
            itemParamItem.setParamData(itemParams);
            this.itemParamItemService.save(itemParamItem);
        }
    }

    /**
     * 查询除下架之外的商品
     * @param page
     * @param rows
     * @return PageInfo<Item>
     * @Create By Jair_Huang on 2017年5月22日 下午3:56:55
     */
    public PageInfo<Item> queryItemList(Integer page, Integer rows) {
        Example example = new Example(Item.class);
        example.setOrderByClause("updated DESC");
        example.createCriteria().andNotEqualTo("status", 3);
        return super.queryPageListByExample(example, page, rows);
    }

    /**
     * 实现商品的逻辑删除
     * 
     * @param ids
     */
    public void updateByIds(List<Object> ids) {
        Example example = new Example(Item.class);
        example.createCriteria().andIn("id", ids);
        Item item = new Item();
        item.setStatus(3);// 更改状态为3，说明该商品已经被删除
        super.getMapper().updateByExampleSelective(item, example);
    }

    public void updateItem(Item item, String desc, ItemParamItem itemParamItem) {
        // 强制设置不能被更新的字段为null
        item.setStatus(null);
        item.setCreated(null);
        // 更新商品数据
        super.updateSelective(item);

        // 更新商品描述数据
        ItemDesc itemDesc = new ItemDesc();
        itemDesc.setItemId(item.getId());
        itemDesc.setItemDesc(desc);
        this.itemDescService.updateSelective(itemDesc);

        if (null != itemParamItem) {
            // 更新规格参数
            this.itemParamItemService.updateSelective(itemParamItem);
        }
    }
}
